package com.example.myauthann;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author CBeann
 * @create 2020-07-02 10:03
 */
@RestController
public class HelloController {

  @RequestMapping("/hello")
  @Auth
  public String hello() {
    System.out.println("HelloController..helo...");
    return "success";
  }

  @RequestMapping("/hello2")
  @Auth
  public String hello2(HttpServletResponse response) throws Exception {

    Lock lock = new ReentrantLock();
    lock.lock();
    try {

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      lock.unlock();
    }

    // 创建HSSFWorkbook对象(excel的文档对象)
    HSSFWorkbook wb = new HSSFWorkbook();
    // 建立新的sheet对象（excel的表单）
    HSSFSheet sheet = wb.createSheet("成绩表");
    // 在sheet里创建第一行，参数为行索引(excel的行)，可以是0～65535之间的任何一个
    HSSFRow row1 = sheet.createRow(0);
    // 创建单元格（excel的单元格，参数为列索引，可以是0～255之间的任何一个
    HSSFCell cell = row1.createCell(0);
    // 设置单元格内容
    cell.setCellValue("学员考试成绩一览表");
    // 合并单元格CellRangeAddress构造参数依次表示起始行，截至行，起始列， 截至列
    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
    // 在sheet里创建第二行
    HSSFRow row2 = sheet.createRow(1);
    // 创建单元格并设置单元格内容
    row2.createCell(0).setCellValue("姓名");
    row2.createCell(1).setCellValue("班级");
    row2.createCell(2).setCellValue("笔试成绩");
    row2.createCell(3).setCellValue("机试成绩");
    // 在sheet里创建第三行
    HSSFRow row3 = sheet.createRow(2);
    row3.createCell(0).setCellValue("李明");
    row3.createCell(1).setCellValue("As178");
    row3.createCell(2).setCellValue(87);
    row3.createCell(3).setCellValue(78);
    // .....省略部分代码

    // 输出Excel文件
    OutputStream output = response.getOutputStream();
    response.reset();
    response.setHeader("Content-disposition", "attachment; filename=details.xls");
    response.setContentType("application/msexcel");
    wb.write(output);
    output.close();

    System.out.println("HelloController..helo2...");
    return "success";
  }
}
